type ModuleStatus = 'declare' | 'loading' | 'loaded';

type DefineBody = (require: NodeRequireFunction, module: Module, exports: any, __dirname: string, __filename: string) => any;

interface DefineOptions {
    id: string;
    dependency: { [key: string]: string },
    bundle?: boolean
}

interface ZPackRequire {
    (id: string): any;
    dynamic(id: string): Promise<any>;
    ensure(ids: string[], cb: () => void, errcb?: (err: any) => any): void;
    resolve(id: string): string;
}